package com.zzy.algorithm.linkedList;

import com.zzy.algorithm.model.ListNode;

/**
 *
 * LeetCode - 876 : 链表的中间节点
 *
 * 给定一个头结点为 head 的非空单链表，返回链表的中间结点。
 *
 * 如果有两个中间结点，则返回第二个中间结点。
 *
 * 题解思路：
 * 方法一：
 *
 */
public class Q13_MiddleNodeOfLinkedList {

    public static void main(String[] args) {
        Q13_MiddleNodeOfLinkedList q13_middleNodeOfLinkedList = new Q13_MiddleNodeOfLinkedList();
        ListNode solution = q13_middleNodeOfLinkedList.solution(ListNode.list5);
        while(solution != null){
            System.out.println(solution.val);
            solution = solution.next;
        }
    }

    private ListNode solution(ListNode head){
        ListNode node1 = head;
        ListNode node2 = head;
        while(node2 != null && node2.next != null){
            node1 = node1.next;
            node2 = node2.next.next;
        }
        return node1;
    }

}
